/**
 * 
 */
package com.google.code.cisx.wfe.model;

import java.util.UUID;

/**
 * PetriNetEntity typified with some entity data.
 * 
 * @author <a href='mailto:rahul.thakur.xdev@gmail.com'>Rahul Thakur</a>
 * @since 1.0
 * @version $Id$
 */
public interface PetriNetEntity<D> {

    /**
     * Unique identifier assigned to a PetriNet entity.
     * 
     * @return
     */
    public UUID getId();

    /**
     * Returns a readable label for a Petri-Net entity.
     * 
     * @return
     */
    public String getLabel();

    /**
     * Set data for this {@link PetriNetEntity}.
     * 
     * @param data
     */
    public void setData(D data);

    /**
     * Return the data for this {@link PetriNetEntity}.
     * 
     * @return T instance of data that this PetriNetEntity may use.
     */
    public D getData();
}
